package com.sunrise.crm.repositorio;

import java.util.Collection;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Repository;

import com.sunrise.crm.repositorio.iface.CidadeDao;
import com.sunrise.generico.acesso.DaoNegocioService;
import com.sunrise.generico.entidade.Cidade;
import com.sunrise.generico.entidade.Estado;

@Repository
public class CidadeDaoImpl extends DaoNegocioService<Cidade> implements
		CidadeDao {

	public List<Cidade> listarOrdenado() {
		return listar(Cidade.class);
	}

	public Cidade getById(Long id) {
		return getById(id, Cidade.class);
	}

	@Override
	public Cidade buscarPorNome(String cidade) {
		Criteria crit = getSession().createCriteria(Cidade.class);
		crit.add(Restrictions.eq("nome", cidade));
		return (Cidade) crit.uniqueResult();
	}

	@SuppressWarnings("unchecked")
	@Override
	public Collection<Cidade> listarPorEstado(Estado estado) {
		Criteria crit = getSession().createCriteria(Cidade.class);
		crit.add(Restrictions.eq("estado", estado));
		return crit.list();
	}

	
	@SuppressWarnings("unchecked")
	@Override
	public Collection<Cidade> listarPorNome(String nome) {
		Criteria crit = getSession().createCriteria(Cidade.class);
		crit.add(Restrictions.ilike("nome", nome, MatchMode.ANYWHERE));
		return crit.list();
	}


}
